package com.example.inventoryservice.strategy;

/**
 * 环境类：购物车
 * 负责管理商品和支付策略
 */
public class ShoppingCart {
    /**
     * 持有支付策略接口的引用
     * 通过策略模式实现支付方式的灵活切换
     */
    private PaymentStrategy paymentStrategy;

    /**
     * 设置支付策略
     * @param paymentStrategy 具体的支付策略实现
     */
    public void setPaymentStrategy(PaymentStrategy paymentStrategy) {
        this.paymentStrategy = paymentStrategy;
    }

    /**
     * 计算商品总价
     * @return 总价金额
     */
    public double calculateTotal() {
        // 实际业务逻辑，这里简化返回一个固定值
        return 100.0;
    }

    /**
     * 执行支付操作
     * 使用设置的支付策略完成支付
     */
    public void checkout() {
        double amount = calculateTotal();
        paymentStrategy.pay(amount);
    }
}
